#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include "stack.h"
#include "queue.h"

using namespace std;

template <class T>
T add(T a, T b)
{
	cout << "T add(T a, T b)" << endl;
	return a + b;
}

template <>
int add<int>(int a, int b)
{
	cout << "int add<int>(int a, int b)" << endl;
	return a + b;
}

template<class K, class V>
class A
{
public:
	A()
	{
		cout << "class A" << endl;
	}
public:
};

template<class K>
class A<K,int>
{
public:
	A()
	{
		cout << "class A<K,int>" << endl;
	}
};

template<>
class A<int, int>
{
public:
	A()
	{
		cout << "class A<int, int>" << endl;
	}
};


int main()
{
	cout << add(1,1) << endl;
	cout << add<double>(1.1,1.1) << endl;

	A<char, char> a;
	A<char, int> b;
	A<int,int> c;
	
	return 0;
}